このマニュアルでは、SQL Anywhere の組み込み http サーバを PHP 外部環境モジュールとともに使用する方法について説明します。
データベースの作成
指定したディレクトリで、データベースを初期化します。Sybase Central を使用するか、またはコマンド・プロンプトから以下のコマンドを実行します。
dbinit test.db
http サーバの起動
コマンド・プロンプトから、-xs スイッチを使用してサーバを起動し、以下のポートを指定します。
dbeng11 test.db -xs http(port=8000)
ルート Web サービスの作成
最初に、SQL Anywhere http サーバが入力 URL をどのように処理するかを定義するために、Web サービスを作成する必要があります。このサービスは、残りの URL を値として解釈し、それを変数としてsp_root() プロシージャに渡します (sp_root() プロシージャは、次の手順で作成します)。Web サービスの作成の詳細については、マニュアル(SQL Anywhere サーバ - SQL リファレンス≫ SQL の使用≫ SQL 文≫ SQL 文 (A 〜 D) ≫ CREATE SERVICE 文)を参照してください。
CREATE SERVICE ROOT
TYPE 'RAW'
USER DBA
AUTHORIZATION OFF
URL ON
AS CALL sp_root(:URL)
プロシージャの作成
sp_root() プロシージャは、HTTP ヘッダを設定し、'test' という文字列を出力します。
CREATE PROCEDURE sp_root( IN URL LONG VARCHAR )
BEGIN
CALL sa_set_http_header('Content-Type','text/html');
SELECT 'test';
END
ファイルからコードを読み込む
入力 URL に基づいてファイルから読み込むように、プロシージャを変更することができます。
ALTER PROCEDURE sp_root( IN URL LONG VARCHAR )
BEGIN
CALL sa_set_http_header('Content-Type','text/html');
SELECT xp_read_file(URL);
END
これでサーバは、ユーザが URL 内に指定したファイルからテキストを読み込んで出力するようになります。たとえば、ユーザがブラウザに「http://localhost:8000/phpinfo.php」と入力した場合、SQL
Anywhere は、データベースと同じディレクトリ内にある phpinfo.php ファイルからテキストを読み込んで出力します。phpinfo.php
は現在存在しないため、何も表示されません。
スクリプトの作成
次に、データベースと同じディレクトリ内に phpinfo.php ファイルを作成します。このファイルは、以下の単純な
PHP スクリプトを含みます。
<?php
echo phpinfo();
?>
http://localhost:8000/phpinfo.php をブラウズすると、ブランクの画面が表示されますが、ページ・ソースを表示すると、phpinfo.php
のコンテンツが含まれていることがわかります。
PHP 外部環境の使用
最後に、sp_root() プロシージャを変更します。これにより、PHP 外部環境モジュールを使用して
PHP スクリプトが解析されます。
ALTER PROCEDURE sp_root( IN URL LONG VARCHAR )
BEGIN
CALL sa_set_http_header('Content-Type','text/html');
SELECT sa_http_php_page(xp_read_file(URL));
END
sa_http_php_page システム・プロシージャを使用すると、xp_read_file() から返されるテキスト
(PHP コード) が、別のプロセスで PHP によって解釈されます。
注:
データベース内から PHP スクリプトを解析することもできます。この場合、sa_http_php_page() に LONG VARCHAR パラメータを指定する必要があります。
|